package com.xuliugen.javamybatis.demo.decorator;

/**
 * Created by xuliugen on 2017/11/8.
 */
public class ConcreteDecoratorB extends Decorator {

    /**
     * 构造方法，传入组件对象
     * @param component 组件对象
     */
    public ConcreteDecoratorB(Component component) {
        super(component);
    }

    /**
     * 在调用父类的operation方法之前需要执行的操作
     */
    private void operationFirst() {
        System.out.println("ConcreteDecoratorB.operationFirst()");
    }

    /**
     * 在调用父类的operation方法之后需要执行的操作
     */
    private void operationLast() {
        System.out.println("ConcreteDecoratorB.operationLast()");
    }

    /**
     * 调用父类的方法，可以在调用前后执行一些附加动作
     */
    @Override
    public void operation() {
        //添加的功能
        operationFirst();
        //这里可以选择性的调用父类的方法，如果不调用则相当于完全改写了方法，实现了新的功能
        super.operation();
        //添加的功能
        operationLast();
    }
}
